//ItemMGR.h

//******************************************************
//*													   *
//* ItemMGR  <<Control>> By Duk-ho  07.1.7			   *
//* Revision : Taek han, Go							   *
//* Revision Date : 2007-01-22		 				   *
//*													   *
//******************************************************


#ifndef _ITEMMGR_H
#define _ITEMMGR_H

#include "Item.h"
#include "TagMGR.h"
#include "ChannelMGR.h"
#include "LinkedList.h"


class ItemMGR
{               
	public: 
		//////////////////////////////////////////////////////////
		// Constructor & Destructor								//
		//////////////////////////////////////////////////////////
		
		//Constructor
		ItemMGR();
		ItemMGR( ChannelMGR* channelMGR, TagMGR* tagMGR );
		
		//Copy Constructor
		ItemMGR(const ItemMGR& source);
	
		//Destructor
		virtual ~ItemMGR();

		
		//////////////////////////////////////////////////////////
		// Operators											//
		//////////////////////////////////////////////////////////

		// = Operator
		ItemMGR& operator = (const ItemMGR& source);

		// [] Operator
		Item& operator [] (int index);


		//////////////////////////////////////////////////////////
		// Member Functions										//
		//////////////////////////////////////////////////////////

		//GetCount
		unsigned int GetCount() const;
		

		//Record
		Item* Record(Item item);

		//Find By Channel
		void Find(Channel* channel, unsigned int *count, Item **itemset );

		//Find By Tag
		void Find( Tag* tag, unsigned  int *count, Item **itemset );

		//Find By Item Link
		Item Find( string link );

		//AddSlashes
		void AddSlashes( string text, char** outputString );
	
	private:
		unsigned int count; 
		LinkedList<Item> items;
		ChannelMGR* channelMGR;
		TagMGR* tagMGR;
};



//Inline Function
inline unsigned int ItemMGR::GetCount() const
{
	return this->count;
}


#endif
